using Godot;

public partial class LevelExit : Area2D
{
    // 在编辑器里直接把下一个关卡 (.tscn) 拖进来
    [Export(PropertyHint.File, "*.tscn")] public PackedScene NextLevelScene;

    public override void _Ready()
    {
        // 动态连接信号
        BodyEntered += OnBodyEntered;
    }

    private void OnBodyEntered(Node2D body)
    {
        // 确认是玩家
        if (body is PlayerController)
        {
            LoadNextLevel();
        }
    }

    private void LoadNextLevel()
    {
        if (NextLevelScene == null)
        {
            GD.PrintErr($"[LevelExit] 错误: {Name} 节点没有分配下一关的场景！请在编辑器里拖入 .tscn 文件。");
            return; // 直接返回，不要去调用 DeferredChangeScene，否则会崩
        }


        // --- 新增：保存进度 ---
        GameManager.Instance.CompleteLevel(NextLevelScene.ResourcePath);
        GD.Print($"[LevelExit] 保存进度");
        // 新代码: 调用转场单例 (注意：ChangeScene 需要字符串路径)

        GD.Print("准备前往下一关...");

        CallDeferred(nameof(DeferredChangeScene));
    }

    private void DeferredChangeScene()
    {
        SceneTransition.Instance.ChangeScene(NextLevelScene.ResourcePath);
    }
}